package com.hzz.dto.patrol;

import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.hzz.framework.dto.BaseDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.Size;
import java.util.Date;

@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
@ApiModel("临时巡查任务 DTO")
public class PatrolTaskDto extends BaseDto {
    /** id */
    Long id;
    
    /** 发布对象（一期系统只有本级河道可选） */
    @ApiModelProperty(value = "发布对象（一期系统只有本级河道可选）")
    // @NotNull(message = "target不能为空")
    @Size(max = 50, message = "target最大50字符")
    String target;
    
    /** 所在河道 */
    @ApiModelProperty(value = "所在河道code")
    // @NotNull(message = "riverCourseCode不能为空")
    @Size(max = 50, message = "riverCourseCode最大50字符")
    String riverCourseCode;
    
    /**
     * 所在河道
     */
    String areaIds;
    
    String areaNames;
    
    String riverCourseName;
    
    /** 任务类型（临时任务、常规任务、紧急任务） */
    @ApiModelProperty(value = "任务类型（临时任务、常规任务、紧急任务）")
    // @NotNull(message = "taskType不能为空")
    @Size(max = 20, message = "taskType最大20字符")
    String taskType;
    
    /** 执行人角色（巡查员、河长） */
    @ApiModelProperty(value = "执行人角色（巡查员、河长）")
    // @NotNull(message = "executorRole不能为空")
    @Size(max = 20, message = "executorRole最大20字符")
    String executorRole;
    
    /** 任务开始时间 */
    @ApiModelProperty(value = "任务开始时间")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    Date startTime;
    
    /** 任务有效结束时间 */
    @ApiModelProperty(value = "任务有效结束时间")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    Date endTime;
    
    /**
     * 任务实际实行开始时间
     */
    @ApiModelProperty(value = "任务实际实行开始时间")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    Date excStartTime;
    
    /**
     * 任务实际执行完成时间
     */
    @ApiModelProperty(value = "任务实际执行完成时间")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    Date excEndTime;
    
    /** 任务状态（未巡查、已巡查，默认是未巡查） */
    @ApiModelProperty(value = "任务状态（未巡查、已巡查，默认是未巡查）")
    // @NotNull(message = "taskStatus不能为空")
    @Size(max = 10, message = "taskStatus最大10字符")
    String taskStatus;
    
    /** 任务内容 */
    @ApiModelProperty(value = "任务内容")
    // @NotNull(message = "taskContent不能为空")
    @Size(max = 100, message = "taskContent最大100字符")
    String taskContent;
    
    /** 巡查轨迹（轨迹坐标点集合）([{lon,lat},{lon,lat}...]) */
    @ApiModelProperty(value = "巡查轨迹（轨迹坐标点集合）([{lng,lat},{lng,lat}...]) ")
    @Size(max = 65535, message = "patrolTrack最大65535字符")
    String patrolTrack;
    
    /**
     * 巡查公里数
     */
    @ApiModelProperty(value = "巡查公里数")
    @Size(max = 55, message = "patrolKilometer最大55字符")
    String patrolKilometer;
    
    /**
     * 巡查人账号（巡河时由app端传入）
     */
    @ApiModelProperty(value = "巡查人账号（巡河时由app端传入）")
    @Size(max = 55, message = "executorAccount最大55字符")
    String executorAccount;
    
    /**
     * 巡查人姓名（巡河时由app端传入）
     */
    @ApiModelProperty(value = "巡查人姓名（巡河时由app端传入）")
    @Size(max = 255, message = "executorName最大255字符")
    String executorName;
    
    /**
     * 日志删除标识(默认0未删除，1已删除)
     */
    @ApiModelProperty(value = "日志删除标识(默认0未删除，1已删除)")
    Integer logDelFlag;
    
    /** 创建者河长级别（省、市、区、街、村） */
    @ApiModelProperty(value = "创建者河长级别（省、市、区、街、村） ")
    @Size(max = 20, message = "creatorLevel最大20字符")
    String creatorLevel;
    
    /** 备注 */
    @ApiModelProperty(value = "备注")
    @Size(max = 255, message = "memo最大255字符")
    String memo;
    
    /** 删除标识(0未删除1已删除) */
    @ApiModelProperty(value = "删除标识(0未删除1已删除) ")
    Integer delFlag;
    
    /** 建立者id */
    @ApiModelProperty(value = "建立者id")
    Long createId;
    
    /** 更新时间 */
    @ApiModelProperty(value = "更新时间")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    Date dateUpdated;
    
    /** 创建时间 */
    @ApiModelProperty(value = "创建时间")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    Date dateCreated;
    
    /**
     * 巡河日志列表查询筛选行政区划的参数
     */
    String filterAreaIds;
    
    String filterAreaNames;
    /**
     * 行政区划
     */
    String pac;
    
}
